#pragma once
#include <cstdint>
#include <array>
#include <algorithm>
#include <random>
#include <numeric>


template<std::uint16_t mapper_size>
std::array<std::uint8_t, mapper_size> generateRandomMapping(const std::uint64_t seed)
{
    std::array<std::uint8_t, mapper_size> mapping;

    std::iota(mapping.begin(), mapping.end(), 0);
    std::shuffle(mapping.begin(), mapping.end(), std::mt19937_64(seed));

    return mapping;
}
